/**   
* @Title: AbstractTemplates.java 
* @Package cn.com.commons.webframe.template 
* @Description: 抽象模板工厂类 
* @author chenmin-ds   
* @date 2017年2月23日 下午2:39:58 
* @version V1.0   
*/ 


package cn.com.klun.tjy.admin.common;

import cn.com.klun.tjy.common.factory.SpringBeanFactory;
import freemarker.template.TemplateMethodModel;
import freemarker.template.TemplateModelException;

import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;

/** 
 * @ClassName: AbstractTemplates 
 * @Description: 抽象模板工厂类
 * @author chenmin-ds 
 * @date 2017年2月23日 下午2:39:58  
 */
public class AbstractTemplates implements TemplateMethodModel{

	private ConcurrentMap<String, FormaterTemplate> ft = new ConcurrentHashMap<String, FormaterTemplate>();
	
	/**
	 * @param arguments .get(0) 扩展格式化对象名称
	 * @param arguments .get(。。。) 参数
	 */
	@Override
    @SuppressWarnings("rawtypes")
	public Object exec(List arguments) throws TemplateModelException {
		String name = (String) arguments.get(0);
		FormaterTemplate template = ft.get(name);
		if(null == template){
			template = (FormaterTemplate) SpringBeanFactory.getBean(name);
			if(null == template){
				return "无信息";
			}else{
				ft.put(name, template);
			}
		}
		return template.exec(arguments);
	}

}
